package com.iot.ammeter.mapper.web.role;

import com.iot.ammeter.dto.web.role.RoleDTO;
import com.iot.ammeter.entity.web.role.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 角色表 Mapper 接口
 * </p>
 *
 * @author basil
 * @since 2021-09-25
 */
@Mapper
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 将角色id与菜单列表关系报春至tb_role_menu
     *
     * @param id         主键
     * @param roleId     角色id
     * @param menuId     菜单id
     * @param createTime 创建时间
     * @param updateTime 修改时间
     * @return int
     */
    int saveRoleAndMenu(@Param("id") String id, @Param("roleId") String roleId, @Param("menuId") String menuId, @Param("createTime") LocalDateTime createTime, @Param("updateTime") LocalDateTime updateTime);

    /**
     * 查询数据库是否已存在该角色
     *
     * @param roleName 角色名
     * @return Role
     */
    Role RoleIsExistsByRoleName(@Param("roleName") String roleName);

    /**
     * 获取角色列表
     *
     * @param roleName 角色名称，可不携带，不携带查询所有
     * @return List
     */
    List<RoleDTO> selectList(@Param("roleName") String roleName);

    /**
     * 获取角色详细信息
     *
     * @param roleId 角色id
     * @return RoleDTO
     */
    RoleDTO selectOneByRoleId(@Param("roleId") String roleId);

    /**
     * 移除角色对应的菜单
     *
     * @param roleId 角色id
     * @return int 影响行数
     */
    int removeRoleMenuList(@Param("roleId") String roleId);
}
